package com.dingreading.cloud.mall.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 实体类。
 *
 * @author Administrator
 * @since 2023-11-22
 */
@Data
@Table(value = "wh_stock_in")
public class WhStockIn implements Serializable {

    @Id(keyType = KeyType.Auto)
    private Long id;

    /**
     * 添加时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(onInsertValue = "now()")
    private Date addTime;

    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(onInsertValue = "now()", onUpdateValue = "now()")
    private Date editTime;

    /**
     * 完成时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date okTime;

    /**
     * 退回时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date returnTime;

    /**
     * 入库类型 1.采购 2.出库退回
     */
    @ApiModelProperty(value = "入库类型 1.采购 2.出库退回")
    private Integer inType;

    /**
     * 采购订单号
     */
    @ApiModelProperty(value = "采购订单号")
    private String purchaseCode;

    /**
     * 采购商品规格id
     */
    @ApiModelProperty(value = "采购商品规格id")
    private Long purchaseGoodsId;

    /**
     * 入库订单号
     */
    @ApiModelProperty(value = "入库订单号")
    private String inCode;

    /**
     * 供应商id
     */
    @ApiModelProperty(value = "供应商id")
    private Long supplierId;

    /**
     * 供应商名称
     */
    @ApiModelProperty(value = "供应商名称")
    private String supplierName;

    /**
     * 采购商品id
     */
    @ApiModelProperty(value = "采购商品id")
    private Long goodsId;

    /**
     * 采购商品名称
     */
    @ApiModelProperty(value = "采购商品名称")
    private String goodsName;

    /**
     * 采购商品规格id
     */
    @ApiModelProperty(value = "采购商品规格id")
    private Long goodsTypeId;

    /**
     * 采购商品规格名称
     */
    @ApiModelProperty(value = "采购商品规格名称")
    private String goodsTypeName;

    /**
     * 商品规格单位
     */
    @ApiModelProperty(value = "商品规格单位")
    private String unit;

    /**
     * 是否实体货物
     * 0.不是 1.是
     */
    @ApiModelProperty(value = "是否实体货物 0.不是 1.是")
    private Integer realStatus;

    /**
     * 供应商价格
     */
    @ApiModelProperty(value = "供应商价格")
    private Double supplierPrice;

    /**
     * 采购商品单价
     */
    @ApiModelProperty(value = "采购商品规格单价")
    private Double unitPrice;

    /**
     * 采购商品规格总数
     */
    @ApiModelProperty(value = "采购商品规格总数")
    private Integer buyNum;

    /**
     * 商品规格实际入库数
     */
    @ApiModelProperty(value = "商品规格实际入库数")
    private Integer realNum;

    /**
     * 剩余可用入库数
     */
    @ApiModelProperty(value = "剩余可用的入库数")
    private Integer usableNum;

    /**
     * 入库金额
     */
    @ApiModelProperty(value = "入库金额")
    private Double inAmount;

    /**
     * 状态 1.入库完成 2.入库中
     */
    @ApiModelProperty(value = "状态 -1.入库已退回 1.入库完成 2.入库中")
    private Integer status;

    /**
     * 状态名
     */
    @ApiModelProperty(value = "状态名")
    private String statusName;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 创建人id
     */
    @ApiModelProperty(value = "创建人id")
    private Long creatorId;

    /**
     * 创建人姓名
     */
    @ApiModelProperty(value = "创建人姓名")
    private String creator;

    /**
     * 完成入库操作人id
     */
    @ApiModelProperty(value = "完成入库操作人id")
    private Long operatorId;

    /**
     * 完成入库操作人姓名
     */
    @ApiModelProperty(value = "完成入库操作人姓名")
    private String operator;

    /**
     * 退回的出库商品记录id
     */
    @ApiModelProperty(value = "退回的出库商品记录id")
    private Long outGoodsId;

    /**
     * 退回操作人id
     */
    @ApiModelProperty(value = "退回操作人id")
    private Long returnerId;

    /**
     * 退回操作人姓名
     */
    @ApiModelProperty(value = "退回操作人姓名")
    private String returner;

    /**
     * 退回备注
     */
    @ApiModelProperty(value = "退回备注")
    private String returnRemark;

    /**
     * 退回入库的数量
     */
    @ApiModelProperty(value = "退回入库的数量")
    private Integer returnNum;

    /**
     * 退回入库的金额
     */
    @ApiModelProperty(value = "退回入库的金额")
    private Double returnPrice;

}
